package per.turtle.common.core.web.page;

import cn.hutool.http.HttpStatus;
import com.github.pagehelper.PageInfo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;

/**
 * 表格分页数据对象
 *
 * @author turtle
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TableDataInfo<T> implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 总记录数
     */
    private long total;

    /**
     * 列表数据
     */
    private List<T> rows;

    /**
     * 消息状态码
     */
    private int code;

    /**
     * 消息内容
     */
    private String msg;

    /**
     * 响应请求分页数据失败
     */
    public static <V> TableDataInfo<V> error() {
        TableDataInfo<V> rspData = new TableDataInfo<>();
        rspData.setCode(HttpStatus.HTTP_NOT_FOUND);
        rspData.setRows(null);
        rspData.setMsg("查询失败");
        rspData.setTotal(0);
        return rspData;
    }

    /**
     * 响应请求分页数据成功
     */
    public static <V> TableDataInfo<V> success(List<V> list) {
        TableDataInfo<V> rspData = new TableDataInfo<>();
        rspData.setCode(HttpStatus.HTTP_OK);
        rspData.setRows(list);
        rspData.setMsg("查询成功");
        rspData.setTotal(new PageInfo<>(list).getTotal());
        return rspData;
    }

}